home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2002 #11
/
Amiga Plus CD - 2002 - No. 11.iso
/
Tools
/
Development
/
reportplus
/
source
/
f1.c
< prev
next >
Wrap
C/C++ Source or Header
|
2002-10-27
|
106KB
|
2,548 lines
#include <exec/types.h>
#include <exec/memory.h>
#include <proto/exec.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <proto/intuition.h>
#include <libraries/gadtools.h>
#include <proto/gadtools.h>
#include <dos/dos.h>
#include <proto/dos.h>
#include <graphics/gfx.h>
#include <clib/graphics_protos.h>
#include <clib/alib_protos.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include "rp.h"
#define ALL_REACTION_CLASSES
#include <reaction/reaction.h>
#include <clib/texteditor_protos.h>
#include <gadgets/texteditor.h>
#include <pragmas/texteditor_pragmas.h>
#include <gadgets/chooser.h>
#include <pragmas/chooser_pragmas.h>
#define SUBSYSTEMS 128 // counting from 0
#define CPUS 4 // counting from 0
#define MODELS 13 // counting from 0
#define AGNUSES 4 // counting from 0
#define MAXELEMENTS 4 // counting from 0
MODULE void refreshpv(void);
MODULE void updatereportgadgets(void);
MODULE void readreportgadgets(void);
MODULE ULONG Hook1Func(struct Hook *h, VOID *o, VOID *msg);
MODULE void updateemail(void);
AGLOBAL struct ReportStruct report;
MODULE struct Gadget* report_gadgets[GIDS_1 + 1];
MODULE ABOOL SubsystemNodes = FALSE;
MODULE struct List SubsystemList;
MODULE struct
{ STRPTR friendly;
STRPTR unfriendly;
} subsystems[SUBSYSTEMS + 1] =
{ {"3D Look", "new.look" },
{"A590", "A2091.A590" },
{"A2013", "A2013" },
{"A2065", "A2065" },
{"A2090", "A2090.A2090A" },
{"A2090A", "A2090.A2090A" },
{"A2091", "A2091" },
{"A2232", "A2232" },
{"A2300", "A2300" },
{"A2410", "A2410" },
{"A2620", "A2620" },
{"A2630", "A2630" },
{"A3000", "A3000" },
{"A4091", "A4091" },
{"AmigaBASIC", "AmigaBasic" },
{"AGA chipset", "aa.chips" },
{"ALink", "alink" },
{"amiga.lib", "amiga.lib" },
{"AmigaGuide", "amigaguide" },
{"AmigaTerm", "amigaterm" },
{"AmigaVision", "amigavision" },
{"AppShell", "appshell" },
{"ARexx", "arexx" },
{"Art", "art" },
{"AS225", "as225" },
{"ASL.library", "asl.library" },
{"audio.device", "audio.device" },
{"AUTOCONFIG", "autoconfig" },
{"Battery-backed clock", "battclock" },
{"Battery-backed memory", "battmem" },
{"Bootstrap", "strap" },
{"BridgeBoard", "bridgeboard" },
{"BRU", "bru" },
{"bullet.library", "bullet" },
{"C: programs", "cdos.command" },
{"CD.device", "cd.device" },
{"CD32 hardware", "cdgs" },
{"CDFileSystem", "cdfilesystem" },
{"CDTV", "cdtv" },
{"CDTV.device", "cdtv.device" },
{"cdui", "cdui" },
{"CIA.resource", "cia.resource" },
{"CLI", "shell" },
{"clipboard.device", "clipboard" },
{"Commodities", "commodities" },
{"CON-Handler", "con-handler" },
{"console.device", "console.device" },
{"Custom chipset", "custom.chips" },
{"Datatypes", "datatypes" },
{"debug.lib", "debug.lib" },
{"Developer support", "devsupport" },
{"disk.resource", "disk.resource" },
{"diskfont.library", "diskfont" },
{"DOS.library", "dos.library" },
{"Early Startup Control", "bootmenu" },
{"Envoy", "envoy" },
{"Exec.library", "exec" },
{"expansion.library", "expansion" },
{"filesystem", "filesystem" },
{"filesystem.resource", "filesysres" },
{"Fonts", "fonts" },
{"Fountain", "fountain" },
{"gadget.classes", "gadget.classes" },
{"GadTools.library", "gadtools" },
{"gameport.device", "gameport" },
{"Genlock", "genlock" },
{"Graphics", "graphics" },
{"Hardware", "hardware" },
{"HDBackup", "hdbackup" },
{"HDToolBox", "hdtoolbox" },
{"icon.library", "icon.library" },
{"IconEdit", "iconedit" },
{"IDE.device", "ide.device" },
{"IFFParse.library", "iffparse" },
{"input.device", "input.device" },
{"Installer", "installer" },
{"IntelliFont", "fountain" },
{"Intuition.library", "intuition" },
{"IPrefs", "iprefs" },
{"Keyboard", "keyboard" },
{"keymap.library", "keymap" },
{"Keymaps", "keymaps" },
{"layers.library", "layers" },
{"locale.library", "locale.library" },
{"lowlevel.library", "lowlevel" },
{"Maths: FFP", "mathffp" },
{"Maths: IEEE Double Precision", "mathieeedoub" },
{"Maths: IEEE Single Precision", "mathieeesing" },
{"Maths: IEEE", "mathieee" },
{"MicroEMACS", "microemacs" },
{"Monitors", "monitors" },
{"MultiView", "multiview" },
{"nonvolatile", "nonvolatile" },
{"parallel.device", "parallel.device" },
{"PCMCIA", "creditcard" },
{"PORT-Handler", "port-handler" },
{"potgo.resource", "potgo.resource" },
{"Preferences", "preferences" },
{"Printer drivers", "printer.driver" },
{"printer.device", "printer.device" },
{"QUEUE-Handler", "queue-handler" },
{"RAM-Handler", "ram-handler" },
{"ramlib", "ramlib" },
{"realtime", "realtime" },
{"Report+", "report+" },
{"Resources", "resource" },
{"ROM Kernel Manuals", "rkm" },
{"ROMWack", "wack" },
{"Saga: Age of Heroes", "saga" },
{"SANA-2", "sana2" },
{"Scripts", "script" },
{"SCSI.device", "scsi.device" },
{"serial.device", "serial.device" },
{"Shell", "shell" },
{"Startup", "startup" },
{"System/ programs", "system.command" },
{"TCP/IP", "as225" },
{"timer.device", "timer.device" },
{"ToolMaker", "toolmaker" },
{"Tools/ programs", "tools" },
{"trackdisk.device", "trackdisk" },
{"UNIX", "unix" },
{"Unsure", "" },
{"User manuals", "userdocs" },
{"Utilities/ programs", "util.command" },
{"utility.library", "utility.library" },
{"Wack", "wack" },
{"Workbench", "workbench" },
{"Worm Wars", "wormwars" }
};
MODULE STRPTR TypeOptions[4] =
{ "System Software/Hardware Bug",
"3rd Party Product Compatibility",
"Enhancement Request",
NULL
};
MODULE STRPTR SeverityOptions[5] =
{ (STRPTR) "Crashes, hangs or corrupts data",
(STRPTR) "Behaves incorrectly",
(STRPTR) "Cosmetic problem",
(STRPTR) "Works correctly",
NULL
};
MODULE STRPTR AgnusOptions[AGNUSES + 2] =
{ (STRPTR) "AGA",
(STRPTR) "ECS PAL",
(STRPTR) "ECS NTSC",
(STRPTR) "OCS PAL",
(STRPTR) "OCS NTSC",
NULL
};
MODULE STRPTR CPUOptions[CPUS + 2] =
{ (STRPTR) "68020",
(STRPTR) "68030",
(STRPTR) "68040",
(STRPTR) "68060",
(STRPTR) "PowerPC",
NULL
};
MODULE STRPTR ModelOptions[MODELS + 2] =
{ (STRPTR) "A500",
(STRPTR) "A500+",
(STRPTR) "A600",
(STRPTR) "A1000",
(STRPTR) "A1200",
(STRPTR) "A1500",
(STRPTR) "A2000",
(STRPTR) "A2500",
(STRPTR) "A3000",
(STRPTR) "A4000",
(STRPTR) "CDTV",
(STRPTR) "CD32",
(STRPTR) "DraCo",
(STRPTR) "Emulator",
NULL
};
IMPORT ULONG fillcolour, offset;
IMPORT TEXT aslresult[PATHNAMEFIELD + 1],
weekdaystring[10],
datestring[10],
timestring[9],
cpuline[VLONGFIELD + 1];
IMPORT struct SharedStruct shared;
IMPORT TEXT IOBuffer[LONGESTFIELD + 1];
IMPORT SBYTE page;
IMPORT ABOOL certified, fillwindows;
IMPORT TEXT string[PATHNAMEFIELD + 1];
IMPORT struct Window* MainWindowPtr;
IMPORT struct Menu* MenuPtr;
IMPORT struct Screen* ScreenPtr;
IMPORT struct Library* TextEditorBase;
IMPORT Object* WinObject[FUNCTIONS + 1];
IMPORT struct VisualInfo* VisualInfoPtr;
/* report.textfield[] are:
0: brief bug description
1: bug generation procedure or example
2: if this works differently on other versions or hardware, explain
3: what developer is doing in that area of HW or SW
4: related problems
5: enhancement request */
AGLOBAL void report1(void)
{ struct Hook Hook1Struct;
InitHook(&Hook1Struct, Hook1Func, NULL);
/* Create the window object. */
lockscreen();
if (!(WinObject[1] =
NewObject
( WINDOW_GetClass(), NULL,
WA_PubScreen, ScreenPtr,
WA_ScreenTitle, "Report+",
WA_Title, "Report+: Bug Report Editor (Page 1 of 2)",
WA_Activate, TRUE,
WA_DepthGadget, TRUE,
WA_DragBar, TRUE,
WA_CloseGadget, TRUE,
WA_SizeGadget, TRUE,
WA_IDCMP, IDCMP_RAWKEY,
WINDOW_IDCMPHook, &Hook1Struct,
WINDOW_IDCMPHookBits, IDCMP_RAWKEY,
WINDOW_MenuStrip, MenuPtr,
WINDOW_Position, WPOS_CENTERSCREEN,
WINDOW_ParentGroup, report_gadgets[GID_1_LY2] =
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_DeferLayout, TRUE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_FIELD,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_Summary:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 30,
CHILD_MinWidth, 160,
LAYOUT_AddChild, report_gadgets[GID_1_ST1] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST1,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.summary,
STRINGA_MinVisible, 15,
STRINGA_MaxChars, LONGFIELD,
TAG_END),
CHILD_WeightedWidth, 70,
CHILD_MinWidth, 400,
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment, LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Email to:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 30,
CHILD_MinWidth, 160,
LAYOUT_AddChild, report_gadgets[GID_1_ST2] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST2,
STRINGA_TextVal, "",
GA_ReadOnly, TRUE,
TAG_END),
CHILD_WeightedWidth, 70,
CHILD_MinWidth, 400,
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment, LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_Type:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 30,
CHILD_MinWidth, 160,
LAYOUT_AddChild, report_gadgets[GID_1_CH1] =
NewObject
( CHOOSER_GetClass(), NULL,
GA_ID, GID_1_CH1,
GA_RelVerify, TRUE, // otherwise we won't hear the gadget
CHOOSER_PopUp, TRUE,
CHOOSER_LabelArray, TypeOptions,
CHOOSER_Selected, (WORD) report.type,
TAG_END),
CHILD_WeightedWidth, 70,
CHILD_MinWidth, 400,
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment, LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Severit_y:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 30,
CHILD_MinWidth, 160,
LAYOUT_AddChild, report_gadgets[GID_1_CH2] =
NewObject
( CHOOSER_GetClass(), NULL,
GA_ID, GID_1_CH2,
GA_RelVerify, TRUE, // otherwise we won't hear the gadget
CHOOSER_PopUp, TRUE,
CHOOSER_LabelArray, SeverityOptions,
CHOOSER_Selected, (WORD) report.severity,
TAG_END),
CHILD_WeightedWidth, 70,
CHILD_MinWidth, 400,
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment, LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_Debug tools/wedges:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 30,
CHILD_MinWidth, 160,
LAYOUT_AddChild, report_gadgets[GID_1_ST3] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST3,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.debug,
STRINGA_MinVisible, 15,
STRINGA_MaxChars, LONGFIELD,
TAG_END),
CHILD_WeightedWidth, 70,
CHILD_MinWidth, 400,
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment, LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_Program pathname:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 30,
CHILD_MinWidth, 160,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild, report_gadgets[GID_1_ST7] =
NewObject
( STRING_GetClass(),NULL,
GA_ID, GID_1_ST7,
GA_TabCycle, TRUE,
STRINGA_TextVal, report.pp,
STRINGA_MaxChars, PATHNAMEFIELD,
TAG_END),
LAYOUT_AddChild, report_gadgets[GID_1_BU4] =
NewObject
( NULL, "button.gadget",
GA_ID, GID_1_BU4,
GA_RelVerify, TRUE,
BUTTON_AutoButton,BAG_POPFILE,
TAG_END),
CHILD_WeightedWidth, 0,
TAG_END),
CHILD_WeightedWidth, 70,
CHILD_MinWidth, 400,
TAG_END),
CHILD_WeightedHeight, 0,
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Versions:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_FIELD,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_KS:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_WB:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Pr_ogram:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild, report_gadgets[GID_1_ST4] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST4,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.ks,
STRINGA_MinVisible, 3,
STRINGA_MaxChars, 6,
TAG_END),
LAYOUT_AddChild, report_gadgets[GID_1_ST5] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST5,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.wb,
STRINGA_MinVisible, 3,
STRINGA_MaxChars, 6,
TAG_END),
LAYOUT_AddChild, report_gadgets[GID_1_ST6] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST6,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.pv,
STRINGA_MinVisible, 3,
STRINGA_MaxChars, LONGFIELD,
TAG_END),
TAG_END),
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Subsystem:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, report_gadgets[GID_1_LB1] =
NewObject
( LISTBROWSER_GetClass(),NULL,
GA_ID, GID_1_LB1,
GA_RelVerify, TRUE,
LISTBROWSER_Selected, report.subsystem,
LISTBROWSER_Labels, (ULONG) &SubsystemList,
LISTBROWSER_MinVisible,3,
LISTBROWSER_ShowSelected,TRUE,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 30,
CHILD_MinWidth, 160,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "3rd Party Product:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_FIELD,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Manufactu_rer:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "N_ame:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_Version:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild, report_gadgets[GID_1_ST8] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST8,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.thirdmanuf,
STRINGA_MaxChars, MEDFIELD,
STRINGA_MinVisible, 10,
TAG_END),
LAYOUT_AddChild, report_gadgets[GID_1_ST9] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST9,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.thirdname,
STRINGA_MaxChars, MEDFIELD,
STRINGA_MinVisible, 10,
TAG_END),
LAYOUT_AddChild, report_gadgets[GID_1_ST10] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST10,
GA_TabCycle, TRUE,
GA_RelVerify, TRUE,
STRINGA_TextVal, report.thirdver,
STRINGA_MaxChars, MEDFIELD,
STRINGA_MinVisible, 10,
TAG_END),
TAG_END),
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Configuration:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedHeight, 0,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_FIELD,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_Model:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild, report_gadgets[GID_1_CH3] =
NewObject
( CHOOSER_GetClass(), NULL,
GA_ID, GID_1_CH3,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
CHOOSER_LabelArray, ModelOptions,
CHOOSER_Selected, (WORD) report.model,
CHOOSER_MaxLabels, MODELS + 1,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "CP_U:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild, report_gadgets[GID_1_CH4] =
NewObject
( CHOOSER_GetClass(), NULL,
GA_ID, GID_1_CH4,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
CHOOSER_LabelArray, CPUOptions,
CHOOSER_Selected, (WORD) report.cpu,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Ch_ipset Type:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild, report_gadgets[GID_1_CH5] =
NewObject
( CHOOSER_GetClass(), NULL,
GA_ID, GID_1_CH5,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
CHOOSER_LabelArray, AgnusOptions,
CHOOSER_Selected, (WORD) report.agnus,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_No. of floppies:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild, report_gadgets[GID_1_IN1] =
NewObject
( INTEGER_GetClass(), NULL,
GA_ID, GID_1_IN1,
GA_RelVerify, TRUE,
GA_TabCycle, TRUE,
INTEGER_Number, report.floppies,
INTEGER_Minimum, 0,
INTEGER_Maximum, 4,
INTEGER_MinVisible, 1,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_Chip RAM:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild, report_gadgets[GID_1_ST11] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST11,
GA_RelVerify, TRUE,
GA_TabCycle, TRUE,
STRINGA_TextVal, report.chipram,
STRINGA_MaxChars, 4,
TAG_END),
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Mb",
LABEL_Justification, LJ_RIGHT,
TAG_END),
CHILD_WeightedWidth, 0,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Slow_/fast RAM:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild, report_gadgets[GID_1_ST12] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST12,
GA_RelVerify, TRUE,
GA_TabCycle, TRUE,
STRINGA_TextVal, report.fastram,
STRINGA_MaxChars, 4,
TAG_END),
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "Mb",
LABEL_Justification, LJ_RIGHT,
TAG_END),
CHILD_WeightedWidth, 0,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "_HD controller:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild, report_gadgets[GID_1_ST13] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST13,
GA_RelVerify, TRUE,
GA_TabCycle, TRUE,
STRINGA_TextVal, report.hard,
STRINGA_MaxChars, MEDFIELD,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_HorizAlignment,LALIGN_CENTER,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddImage,
NewObject
( LABEL_GetClass(), NULL,
LABEL_Text, "E_xpansion cards:",
LABEL_Justification, LJ_RIGHT,
TAG_END),
TAG_END),
CHILD_WeightedWidth, 50,
LAYOUT_AddChild, report_gadgets[GID_1_ST14] =
NewObject
( STRING_GetClass(), NULL,
GA_ID, GID_1_ST14,
GA_RelVerify, TRUE,
GA_TabCycle, TRUE,
STRINGA_TextVal, report.expansion,
STRINGA_MaxChars, LONGFIELD,
TAG_END),
CHILD_WeightedWidth, 50,
TAG_END),
TAG_END),
TAG_END),
TAG_END),
CHILD_WeightedWidth, 70,
TAG_END),
LAYOUT_AddChild,
NewObject
( LAYOUT_GetClass(), NULL,
LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
LAYOUT_DeferLayout, TRUE,
LAYOUT_BevelStyle, BVS_NONE,
LAYOUT_AddChild, report_gadgets[GID_1_BU2] =
NewObject
( NULL, "button.gadget",
GA_ID, GID_1_BU2,
GA_RelVerify, TRUE,
GA_Text, "Sende_r...",
TAG_END),
LAYOUT_AddChild, report_gadgets[GID_1_BU3] =
NewObject
( NULL, "button.gadget",
GA_ID, GID_1_BU3,
GA_RelVerify, TRUE,
GA_Text, "Other pa_ge...",
TAG_END),
TAG_END),
CHILD_WeightedHeight, 0,
TAG_END),
TAG_END)))
{ rq("Can't create ReAction gadgets!");
}
unlockscreen();
openwindow();
OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_NEW, NOSUB));
OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_OPEN, NOSUB));
OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_SAVE, NOSUB));
OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_SAVEAS, NOSUB));
updatereportgadgets();
ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST1]);
loop();
readreportgadgets();
closewindow();
}
MODULE void readreportgadgets(void)
{ STRPTR stringptr;
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST1], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.summary, stringptr);
if (report.type == COM)
{ if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST8], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.thirdmanuf, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST9], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.thirdname, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST10], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.thirdver, stringptr);
} elif (report.type == BUG)
{ if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST7], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.pp, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST6], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.pv, stringptr);
}
if (report.type != ENH)
{ if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST4], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.ks, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST5], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.wb, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST3], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.debug, stringptr);
}
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST11], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.chipram, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST12], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.fastram, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST13], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.hard, stringptr);
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST14], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.expansion, stringptr);
if (!(GetAttr
( INTEGER_Number, report_gadgets[GID_1_IN1], (ULONG *) &report.floppies
)))
{ rq("Unsupported inquiry!"); // should never happen
} }
AGLOBAL void savereport(ABOOL saveas)
{ /* # Subject: <subject><LF>
# Type: bug|compat|enhancement<LF>
1,3 # Subsystem: <subsystem><LF>
2 # ProductName: <name> (vers=<version>)
2 # ProductInfo: :<manufacturer>:
# Severity: a|b|c|ok|e
1 # Release: KS=<version>,WB=<version>,Program=<version>
2 # Release: KS=<version>,WB=<version>
# Date: <weekday> dd-Mon-yy hh:mm:ss
# Refer: <refer>
# Path: <path>
# ReferID: <referid>
# Config: <config>
1,2a-c ### BRIEF BUG DESCRIPTION:
1,2a-c ### BUG GENERATION PROCEDURE OR EXAMPLE:
1,2 ### ALSO RUNNING:
<debug>
1,2 ### IF THIS WORKS DIFFERENTLY ON OTHER VERSIONS OR HARDWARE,
EXPLAIN:
2a-c ### WHAT DEVELOPER IS DOING IN THAT AREA OF SW OR HW:
1,2a-c ### RELATED PROBLEMS:
3 ### ENHANCEMENT REQUEST: */
readreportgadgets();
strcpy(IOBuffer, "# Subject: ");
strcat(IOBuffer, report.summary);
strcat(IOBuffer, "\n# Type: ");
if (report.type == BUG)
strcat(IOBuffer, "bug");
elif (report.type == COM)
strcat(IOBuffer, "compat");
else /* assumes (report.type == ENH) */
strcat(IOBuffer, "enhancement");
strcat(IOBuffer, "\n");
if (report.type == BUG || report.type == ENH)
{ strcat(IOBuffer, "# Subsystem: ");
strcat(IOBuffer, subsystems[report.subsystem].unfriendly);
strcat(IOBuffer, "\n");
} else
{ strcat(IOBuffer, "# ProductName: ");
strcat(IOBuffer, report.thirdname);
strcat(IOBuffer, " (vers=");
strcat(IOBuffer, report.thirdver);
strcat(IOBuffer, ")\n# ProductInfo: :");
strcat(IOBuffer, report.thirdmanuf);
strcat(IOBuffer, ":\n");
}
strcat(IOBuffer, "# Severity: ");
if (report.type == ENH)
strcat(IOBuffer, "e");
elif (report.severity == 0)
strcat(IOBuffer, "a");
elif (report.severity == 1)
strcat(IOBuffer, "b");
elif (report.severity == 2)
strcat(IOBuffer, "c");
else /* assumes report.severity == 3 */
strcat(IOBuffer, "ok");
strcat(IOBuffer, "\n");
if (report.type == BUG || report.type == COM)
{ strcat(IOBuffer, "# Release: KS=");
strcat(IOBuffer, report.ks);
strcat(IOBuffer, ",WB=");
strcat(IOBuffer, report.wb);
if (report.type == BUG)
{ strcat(IOBuffer, ",Program=");
strcat(IOBuffer, report.pv);
}
strcat(IOBuffer, "\n");
}
getdate();
strcat(IOBuffer, "# Date: ");
strcat(IOBuffer, weekdaystring);
strcat(IOBuffer, " ");
strcat(IOBuffer, datestring);
strcat(IOBuffer, " ");
strcat(IOBuffer, timestring);
strcat(IOBuffer, "\n");
strcat(IOBuffer, report.refer);
strcat(IOBuffer, report.path);
strcat(IOBuffer, report.referid);
strcat(IOBuffer, report.config);
strcat(IOBuffer, "\n");
if (report.type == BUG || (report.type == COM && report.severity != 3))
{ strcat
( IOBuffer,
"### BRIEF BUG DESCRIPTION:\n"
);
strcat(IOBuffer, report.textfield[0]);
strcat
( IOBuffer,
"\n\n### BUG GENERATION PROCEDURE OR EXAMPLE:\n"
);
strcat(IOBuffer, report.textfield[1]);
strcat(IOBuffer, "\n\n");
}
if (report.type == BUG || report.type == COM)
{ strcat(IOBuffer, "### ALSO RUNNING:\n");
strcat(IOBuffer, report.debug);
strcat
( IOBuffer,
"\n\n### IF THIS WORKS DIFFERENTLY ON "
"OTHER VERSIONS OR HARDWARE, EXPLAIN:\n"
);
strcat(IOBuffer, report.textfield[2]);
strcat(IOBuffer, "\n\n");
}
if (report.type == COM && report.severity != 3)
{ strcat
( IOBuffer,
"### WHAT DEVELOPER IS DOING IN THAT AREA OF HW OR SW:\n"
);
strcat(IOBuffer, report.textfield[3]);
strcat(IOBuffer, "\n\n");
}
if (report.type == BUG || (report.type == COM && report.severity != 3))
{ strcat(IOBuffer, "### RELATED PROBLEMS:\n");
strcat(IOBuffer, report.textfield[4]);
strcat(IOBuffer, "\n\n");
} elif (report.type == ENH)
{ strcat(IOBuffer, "### ENHANCEMENT REQUEST:\n");
strcat(IOBuffer, report.textfield[5]);
strcat(IOBuffer, "\n\n");
}
if (!report.output[0] || saveas) // if we need a filename
{ if (saveasl("Save Bug Report", "~(#?.info)"))
{ strcpy(report.output, aslresult);
writeout(report.output);
} }
else
{ writeout(report.output);
} }
AGLOBAL void report_ra_loop(ULONG gid)
{ switch(gid)
{
case GID_1_BU1:
page = 11;
break;
case GID_1_BU2:
page = 1;
break;
case GID_1_BU3:
page = 12;
break;
case GID_1_CH1:
if (!(GetAttr
( CHOOSER_Selected, report_gadgets[GID_1_CH1], (ULONG *) &report.type
)))
{ rq("Unsupported inquiry!"); // should never happen
}
updatereportgadgets();
break;
case GID_1_CH2:
if (!(GetAttr
( CHOOSER_Selected, report_gadgets[GID_1_CH2], (ULONG *) &report.severity
)))
{ rq("Unsupported inquiry!"); // should never happen
}
if (report.type == BUG && report.severity == 3)
{ report.severity = 0;
SetGadgetAttrs
( report_gadgets[GID_1_CH2], MainWindowPtr, NULL,
CHOOSER_Selected, report.severity
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH2], MainWindowPtr, NULL);
}
break;
case GID_1_CH3:
if (!(GetAttr
( CHOOSER_Selected, report_gadgets[GID_1_CH3], (ULONG *) &report.model
)))
{ rq("Unsupported inquiry!"); // should never happen
}
break;
case GID_1_CH4:
if (!(GetAttr
( CHOOSER_Selected, report_gadgets[GID_1_CH4], (ULONG *) &report.cpu
)))
{ rq("Unsupported inquiry!"); // should never happen
}
break;
case GID_1_CH5:
if (!(GetAttr
( CHOOSER_Selected, report_gadgets[GID_1_CH5], (ULONG *) &report.agnus
)))
{ rq("Unsupported inquiry!"); // should never happen
}
break;
case GID_1_ST7:
if (report.type == BUG)
{ refreshpv(); // refreshpv() also reads the gadget for us.
}
break;
case GID_1_BU4:
if (report.type == BUG)
{ if (asl("~(#?.info)"))
{ strcpy(report.pp, aslresult);
SetGadgetAttrs
( report_gadgets[GID_1_ST7], MainWindowPtr, NULL,
STRINGA_TextVal, report.pp
);
refreshpv();
} }
break;
case GID_1_LB1:
if (report.type != COM)
{ if (!(GetAttr
( LISTBROWSER_Selected, report_gadgets[GID_1_LB1], &report.subsystem
)))
{ rq("Unsupported inquiry!"); // should never happen
}
updateemail();
}
break;
default:
break;
} }
MODULE void refreshpv(void)
{ ULONG i;
BPTR FileHandle;
STRPTR stringptr;
strcpy(string, "Version ");
if (!(GetAttr
( STRINGA_TextVal, report_gadgets[GID_1_ST7], (ULONG *) &stringptr
)))
{ rq("Unsupported inquiry!"); // should never happen
}
strcpy(report.pp, stringptr);
strcat(string, report.pp);
if (!(FileHandle = (BPTR) Open("T:ReportPlus.temp", MODE_NEWFILE)))
rq("Can't open T:ReportPlus.temp for writing!");
if (!Execute(string, NULL, FileHandle))
rq("Can't execute Version!");
if (!Close(FileHandle))
rq("Can't close T:ReportPlus.temp for writing!");
readordie("T:ReportPlus.temp");
DeleteFile("T:ReportPlus.temp"); /* returns FALSE for failure */
for (i = 0; i <= MEDFIELD; i++)
{ if (IOBuffer[i] == LF)
{ IOBuffer[i] = 0;
break;
} }
strcpy(report.pv, IOBuffer);
SetGadgetAttrs
( report_gadgets[GID_1_ST6], MainWindowPtr, NULL,
STRINGA_TextVal, report.pv
);
}
AGLOBAL void report_die(void)
{ if (SubsystemNodes)
{ clearreactionlist(&SubsystemList);
SubsystemNodes = FALSE;
} }
AGLOBAL void report_init(void)
{ ULONG i;
struct Node* ListBrowserNodePtr;
NewList(&SubsystemList);
for (i = 0; i <= SUBSYSTEMS; i++)
{ if (!(ListBrowserNodePtr = AllocListBrowserNode
( 1, // columns
/* LBNCA_ tags are those that apply to the specific column. */
LBNA_Column, 0,
LBNCA_Text, subsystems[i].friendly,
LBNCA_CopyText, TRUE,
TAG_END
)))
{ rq("Can't create ReAction listbrowser.gadget node(s)!");
}
AddTail(&SubsystemList, ListBrowserNodePtr);
SubsystemNodes = TRUE;
}
newreport(FALSE);
}
MODULE void updatereportgadgets(void)
{ // the following command is only needed when New or Open... is the
// cause of the update.
SetGadgetAttrs
( report_gadgets[GID_1_ST1], MainWindowPtr, NULL,
STRINGA_TextVal, report.summary
); // summary
if (report.type == BUG && report.severity == 3)
{ report.severity = 0;
}
SetGadgetAttrs
( report_gadgets[GID_1_CH1], MainWindowPtr, NULL,
CHOOSER_Selected, report.type
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH1], MainWindowPtr, NULL);
SetGadgetAttrs
( report_gadgets[GID_1_LB1], MainWindowPtr, NULL,
LISTBROWSER_Selected, report.subsystem
);
updateemail();
if (report.type == BUG)
{ SetGadgetAttrs
( report_gadgets[GID_1_ST7], MainWindowPtr, NULL,
STRINGA_TextVal, report.pp,
GA_Disabled, FALSE
);
SetGadgetAttrs
( report_gadgets[GID_1_BU4], MainWindowPtr, NULL,
GA_Disabled, FALSE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST6], MainWindowPtr, NULL,
STRINGA_TextVal, report.pv,
GA_Disabled, FALSE
);
} else
{ SetGadgetAttrs
( report_gadgets[GID_1_ST7], MainWindowPtr, NULL,
STRINGA_TextVal, report.pp,
GA_Disabled, TRUE
);
SetGadgetAttrs
( report_gadgets[GID_1_BU4], MainWindowPtr, NULL,
GA_Disabled, TRUE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST6], MainWindowPtr, NULL,
STRINGA_TextVal, report.pv,
GA_Disabled, TRUE
);
}
if (report.type == COM)
{ SetGadgetAttrs
( report_gadgets[GID_1_LB1], MainWindowPtr, NULL,
GA_Disabled, TRUE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST8], MainWindowPtr, NULL,
STRINGA_TextVal, report.thirdmanuf,
GA_Disabled, FALSE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST9], MainWindowPtr, NULL,
STRINGA_TextVal, report.thirdname,
GA_Disabled, FALSE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST10],MainWindowPtr, NULL,
STRINGA_TextVal, report.thirdver,
GA_Disabled, FALSE
);
} else
{ SetGadgetAttrs
( report_gadgets[GID_1_LB1], MainWindowPtr, NULL,
GA_Disabled, FALSE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST8], MainWindowPtr, NULL,
STRINGA_TextVal, report.thirdmanuf,
GA_Disabled, TRUE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST9], MainWindowPtr, NULL,
STRINGA_TextVal, report.thirdname,
GA_Disabled, TRUE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST10],MainWindowPtr, NULL,
STRINGA_TextVal, report.thirdver,
GA_Disabled, TRUE
);
}
if (report.type == ENH)
{ SetGadgetAttrs
( report_gadgets[GID_1_ST3], MainWindowPtr, NULL,
CHOOSER_Selected, report.debug,
GA_Disabled, TRUE
);
SetGadgetAttrs
( report_gadgets[GID_1_CH2], MainWindowPtr, NULL,
CHOOSER_Selected, report.severity,
GA_Disabled, FALSE
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH2], MainWindowPtr, NULL);
SetGadgetAttrs
( report_gadgets[GID_1_ST4], MainWindowPtr, NULL,
STRINGA_TextVal, report.ks,
GA_Disabled, TRUE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST5], MainWindowPtr, NULL,
STRINGA_TextVal, report.wb,
GA_Disabled, TRUE
);
} else
{ SetGadgetAttrs
( report_gadgets[GID_1_ST3], MainWindowPtr, NULL,
CHOOSER_Selected, report.debug,
GA_Disabled, FALSE
);
SetGadgetAttrs
( report_gadgets[GID_1_CH2], MainWindowPtr, NULL,
CHOOSER_Selected, report.severity,
GA_Disabled, FALSE
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH2], MainWindowPtr, NULL);
SetGadgetAttrs
( report_gadgets[GID_1_ST4], MainWindowPtr, NULL,
STRINGA_TextVal, report.ks,
GA_Disabled, FALSE
);
SetGadgetAttrs
( report_gadgets[GID_1_ST5], MainWindowPtr, NULL,
STRINGA_TextVal, report.wb,
GA_Disabled, FALSE
);
} }
AGLOBAL void newreport(ABOOL display)
{ ULONG i, stringoffset, bufferoffset;
TEXT cpustring[VLONGFIELD + 1];
report.cpu = 0;
if (cpuline[0] == '?')
{ report.cpu = 0;
} else
{ stringoffset = 0;
bufferoffset = 8;
/* If cpuline[] is full of garbage then this code will cause
problems. */
while (cpuline[bufferoffset] != ' ')
{ cpustring[stringoffset] = cpuline[bufferoffset];
stringoffset++;
bufferoffset++;
}
stringoffset++;
cpustring[stringoffset] = 0;
for (i = 0; i <= CPUS; i++)
{ if (!stricmp(CPUOptions[i], cpustring))
{ report.cpu = i;
break;
} } }
report.floppies = 1;
report.agnus = 0;
report.model = 4;
report.type = 0;
report.severity = 0;
report.subsystem = 0;
report.chipram[0] =
report.fastram[0] =
report.hard[0] =
report.debug[0] =
report.developer[0] =
report.expansion[0] =
report.summary[0] =
report.pv[0] =
report.pp[0] =
report.thirdname[0] =
report.thirdver[0] =
report.thirdmanuf[0] =
report.lastname[0] =
report.firstname[0] =
report.company[0] =
report.phone[0] =
report.email[0] =
report.refer[0] =
report.referid[0] =
report.path[0] =
report.config[0] =
report.output[0] = 0;
if (GetVar("Kickstart", report.ks, 6, NULL) == -1)
report.ks[0] = 0;
if (GetVar("Workbench", report.wb, 6, NULL) == -1)
report.wb[0] = 0;
for (i = 0; i <= 5; i++)
{ report.textfield[i][0] = 0;
}
/* Quicker than strcpy(report.foo, ""); is report.foo[0] = 0;
Consider linking bug report generator with ID database to
automatically generate the list of expansion cards. */
if (display)
{ updatereportgadgets();
} }
AGLOBAL void openreport(void)
{ if (asl("~(#?.info)"))
{ strcpy(report.output, aslresult);
loadreport();
if (page == 11)
{ updatereportgadgets();
} } }
AGLOBAL void loadreport(void)
{ ULONG i;
/* parse() returns when it has moved along and found the specified
`ending string'. The contents, since last parse(), before the
`ending string' are returned in string. */
if (readin(report.output))
{ offset = 0;
parse("# Subject: "); // skip '# Subject: '
parse("\n# Type: "); // goto end of '\n# Type: '
strcpy(report.summary, string);
parse("\n# ");
if (!strcmp(string, "bug"))
{ report.type = BUG;
} elif (!strcmp(string, "compat"))
{ report.type = COM;
} elif (!strcmp(string, "enhancement"))
{ report.type = ENH;
}
if (report.type != COM)
{ parse("Subsystem: ");
parse("\n");
for (i = 0; i <= SUBSYSTEMS; i++)
{ if (!strcmp(string, subsystems[i].unfriendly))
{ report.subsystem = i;
break;
} } }
else
{ parse("ProductName: ");
parse(" (vers=");
strcpy(report.thirdname, string);
parse(")\n# ProductInfo: :");
strcpy(report.thirdver, string);
parse(":\n");
strcpy(report.thirdmanuf, string);
}
parse("# Severity: ");
parse("\n# ");
if (!strcmp(string, "a"))
{ report.severity = 0;
} elif (!strcmp(string, "b"))
{ report.severity = 1;
} elif (!strcmp(string, "c"))
{ report.severity = 2;
} elif (!strcmp(string, "ok"))
{ report.severity = 3;
} elif (!strcmp(string, "e"))
{ report.type = ENH;
}
if (report.type != ENH)
{ parse("Release: KS=");
parse(",WB=");
strcpy(report.ks, string);
if (report.type == BUG)
{ parse(",Program=");
strcpy(report.wb, string);
parse("\n");
strcpy(report.pv, string);
} else
{ // assert(report.type == COM);
parse("\n");
strcpy(report.wb, string);
report.pv[0] = 0;
}
} else report.pv[0] = 0;
parse("# Date: ");
// now sender fields
parse("# Refer: ");
parse(",");
strcpy(report.lastname, string);
parse(" (");
strcpy(report.firstname, string);
parse(" ,phone ");
strcpy(report.company, string);
parse(")\n# Path: ");
strcpy(report.phone, string);
parse("\n# ReferID: ");
strcpy(report.email, string);
parse("\n");
strcpy(report.developer, string);
// now config fields
parse("# Config: ");
parse(",");
report.model = 4;
for (i = 0; i <= MODELS; i++)
{ if (!stricmp(string, ModelOptions[i]))
{ report.model = i;
break; // for speed
} }
parse(",A=");
report.cpu = 0;
for (i = 0; i <= CPUS; i++)
{ if (!stricmp(string, CPUOptions[i]))
{ report.cpu = i;
break; // for speed
} }
parse(",D=");
if (!stricmp(string, "AA"))
report.agnus = 0;
elif (!stricmp(string, "ECS-pal"))
report.agnus = 1;
elif (!stricmp(string, "ECS"))
report.agnus = 2;
elif (!stricmp(string, "old-pal"))
report.agnus = 3;
else /* if (!stricmp(string, "old")) */
report.agnus = 4;
parse(",RAM=");
// We will have here "AA", "ECS" or "old", but we don't use this.
parse("megC/");
strcpy(report.chipram, string);
parse("megF,TD=");
strcpy(report.fastram, string);
parse(",HD=");
report.floppies = atol(string);
parse(",");
strcpy(report.hard, string);
parse("\n");
strcpy(report.expansion, string);
report.pp[0] = 0;
if (report.type == BUG)
{ parse("### BRIEF BUG DESCRIPTION:\n");
parse("\n### BUG GENERATION PROCEDURE OR EXAMPLE:\n");
strcpy(report.textfield[0], string); // bug description
parse("\n### ALSO RUNNING:\n");
strcpy(report.textfield[1], string); // bug procedure
parse("\n### IF THIS WORKS DIFFERENTLY ON OTHER VERSIONS "
"OR HARDWARE, EXPLAIN:\n");
strcpy(report.debug, string); // also running
parse("\n### RELATED PROBLEMS:\n");
strcpy(report.textfield[2], string); // explain differently
parsetoend();
strcpy(report.textfield[3], string); // related problems
} elif (report.type == COM)
{ if (report.severity != 3)
{ parse("### BRIEF BUG DESCRIPTION:\n");
parse("\n### BUG GENERATION PROCEDURE OR EXAMPLE:\n");
strcpy(report.textfield[0], string); // bug description
parse("\n### ALSO RUNNING:\n");
strcpy(report.textfield[1], string); // bug procedure
parse("\n### IF THIS WORKS DIFFERENTLY ON OTHER VERSIONS "
"OR HARDWARE, EXPLAIN:\n");
strcpy(report.debug, string); // also running
parse("\n### WHAT DEVELOPER IS DOING IN THAT AREA OF SW "
"OR HW:\n");
strcpy(report.textfield[2], string); // explain differently
parse("\n### RELATED PROBLEMS:\n");
strcpy(report.textfield[3], string); // what doing?
parsetoend();
strcpy(report.textfield[4], string); // related problems
} else
{ parse("### BRIEF BUG DESCRIPTION:\n");
parse("\n### BUG GENERATION PROCEDURE OR EXAMPLE:\n");
strcpy(report.textfield[0], string); // bug description
parse("\n### WHAT DEVELOPER IS DOING IN THAT AREA OF SW "
"OR HW:\n");
strcpy(report.textfield[1], string); // explain differently
parse("\n### RELATED PROBLEMS:\n");
strcpy(report.textfield[2], string); // what doing?
parsetoend();
strcpy(report.textfield[3], string); // related problems
} }
else
{ // assert(report.type == ENH);
parse("### ENHANCEMENT REQUEST:\n");
parsetoend();
strcpy(report.textfield[0], string);
}
updatereportgadgets();
} }
/* # Subject: <subject><LF>
# Type: bug|compat|enhancement<LF>
BUG,ENH # Subsystem: <subsystem><LF>
COM # ProductName: <name> (vers=<version>)
COM # ProductInfo: :<manufacturer>:
# Severity: a|b|c|ok|e
BUG # Release: KS=<version>,WB=<version>,Program=<version>
COM # Release: KS=<version>,WB=<version>
# Date: <weekday> dd-Mon-yy hh:mm:ss
# Refer: <refer>
# Path: <path>
# ReferID: <referid>
# Config: <config>
BUG,COMa-c ### BRIEF BUG DESCRIPTION:
BUG,COMa-c ### BUG GENERATION PROCEDURE OR EXAMPLE:
BUG,COM ### ALSO RUNNING:
<debug>
BUG,COM ### IF THIS WORKS DIFFERENTLY ON OTHER VERSIONS OR HARDWARE,
EXPLAIN:
COMa-c ### WHAT DEVELOPER IS DOING IN THAT AREA OF SW OR HW:
BUG,COMa-c ### RELATED PROBLEMS:
ENH ### ENHANCEMENT REQUEST: */
AGLOBAL void report2(void)
{ struct Hook Hook1Struct;
STRPTR textBuffer[MAXELEMENTS + 1] = {NULL, NULL, NULL, NULL, NULL}; // to avoid spurious compiler warnings
TEXT GadTitle[MAXELEMENTS + 1][VLONGFIELD + 1];
ULONG i, counter,
elements = 0; // to avoid spurious compiler warnings
struct TagItem tag_texteditor[4] =
{ { GA_ID, NULL }, // ti_Data filled later
{ GA_RelVerify, TRUE },
{ GA_TEXTEDITOR_ExportWrap, 75 },
{ TAG_END, NULL }
}, tag_subcaption[3] =
{ { LABEL_Text, NULL }, // ti_Data filled later
{ LABEL_Justification, LJ_CENTRE },
{ TAG_END, NULL }
}, tag_button[4] =
{ { GA_ID, GID_1_BU1 },
{ GA_RelVerify, TRUE },
{ GA_Text, (ULONG) "_Other page..."},
{ TAG_END, NULL }
}, tag_supercaption[6] =
{ { LAYOUT_Orientation, LAYOUT_ORIENT_VERT },
{ LAYOUT_VertAlignment, LALIGN_CENTER },
{ LAYOUT_HorizAlignment, LALIGN_CENTER },
{ LAYOUT_BevelStyle, BVS_NONE },
{ LAYOUT_AddImage, NULL }, // ti_Data filled later
{ TAG_END, NULL }
}, tag_onlylayout[23] =
{ { LAYOUT_Orientation, LAYOUT_ORIENT_VERT },
{ LAYOUT_DeferLayout, TRUE },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_WeightedHeight, 0 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_MinHeight, 80 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_WeightedHeight, 0 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_MinHeight, 80 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_WeightedHeight, 0 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_MinHeight, 80 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_WeightedHeight, 0 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_MinHeight, 80 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_WeightedHeight, 0 },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_MinHeight, 80 },
{ TAG_END, NULL }
}, tag_rootlayout[8] =
{ { LAYOUT_Orientation, LAYOUT_ORIENT_VERT },
{ LAYOUT_SpaceOuter, TRUE },
{ LAYOUT_DeferLayout, TRUE },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_WeightedHeight, 100, },
{ LAYOUT_AddChild, NULL }, // ti_Data filled later
{ CHILD_WeightedHeight, 0 },
{ TAG_END, NULL }
}, tag_window[15] =
{ { WA_PubScreen, NULL }, // ti_Data filled later
{ WA_ScreenTitle, (ULONG) "Report+" },
{ WA_Title, (ULONG) "Report+: Report Details (Page 2 of 2)" },
{ WA_Activate, TRUE },
{ WA_DepthGadget, TRUE },
{ WA_DragBar, TRUE },
{ WA_CloseGadget, TRUE },
{ WA_SizeGadget, TRUE },
{ WA_IDCMP, IDCMP_RAWKEY },
{ WINDOW_IDCMPHook, NULL }, // ti_Data filled later
{ WINDOW_IDCMPHookBits, IDCMP_RAWKEY },
{ WINDOW_MenuStrip, NULL }, // ti_Data filled later
{ WINDOW_Position, WPOS_CENTERSCREEN },
{ WINDOW_ParentGroup, NULL }, // ti_Data filled later
{ TAG_END, NULL }
};
switch(report.type)
{
case BUG:
strcpy(GadTitle[0], "Brief bug _description:");
strcpy(GadTitle[1], "_Bug generation procedure or example:");
strcpy(GadTitle[2], "_If this works differently on other versions or hardware, explain:");
strcpy(GadTitle[3], "_Related problems:");
elements = 3;
break;
case COM:
if (report.severity == 3)
{ strcpy(GadTitle[0], "_If this works differently on other versions or hardware, explain:");
elements = 0;
} else
{ strcpy(GadTitle[0], "Brief bug _description:");
strcpy(GadTitle[1], "_Bug generation procedure or example:");
strcpy(GadTitle[2], "_If this works differently on other versions or hardware, explain:");
strcpy(GadTitle[3], "_What developer is doing in that area of software or hardware:");
strcpy(GadTitle[4], "_Related problems:");
elements = 4;
}
break;
case ENH:
strcpy(GadTitle[0], "_Enhancement request:");
elements = 0;
break;
default:
// assert(0);
break;
}
/* window
root-layout
only-layout
[super-caption
sub-caption
texteditor]...
button
It's not necessary to use only-layout, a more efficient way is:
window
root-layout
[super-caption
sub-caption
texteditor]...
button */
counter = 2;
for (i = 0; i <= elements; i++)
{ tag_subcaption[0].ti_Data = (ULONG) GadTitle[i];
tag_texteditor[0].ti_Data = GID_1_TE1 + i;
tag_supercaption[4].ti_Data = (ULONG) NewObjectA(LABEL_GetClass(), NULL, tag_subcaption);
tag_onlylayout[counter].ti_Data = (ULONG) NewObjectA(LAYOUT_GetClass(), NULL, tag_supercaption);
counter += 2;
tag_onlylayout[counter].ti_Data =
report_gadgets[GID_1_TE1 + i] = (ULONG) NewObjectA(TEXTEDITOR_GetClass(), NULL, tag_texteditor);
counter += 2;
}
tag_onlylayout[counter].ti_Tag = TAG_END;
tag_rootlayout[3].ti_Data = (ULONG) NewObjectA(LAYOUT_GetClass(), NULL, tag_onlylayout);
tag_rootlayout[5].ti_Data =
report_gadgets[GID_1_BU1] = (ULONG) NewObjectA(NULL, "button.gadget", tag_button);
tag_window[13].ti_Data =
report_gadgets[GID_1_LY1] = (ULONG) NewObjectA(LAYOUT_GetClass(), NULL, tag_rootlayout);
InitHook(&Hook1Struct, Hook1Func, NULL);
tag_window[9].ti_Data = &Hook1Struct;
lockscreen();
tag_window[0].ti_Data = (ULONG) ScreenPtr;
tag_window[11].ti_Data = MenuPtr;
WinObject[1] = (ULONG) NewObjectA(WINDOW_GetClass(), NULL, tag_window);
unlockscreen();
if (!WinObject[1]) // Object creation successful?
{ rq("Can't create ReAction objects!");
}
openwindow();
// Do any necessary imports.
switch(report.type)
{
case BUG:
SetGadgetAttrs
( report_gadgets[GID_1_TE1], MainWindowPtr, NULL,
GA_TEXTEDITOR_Contents, report.textfield[0]
);
SetGadgetAttrs
( report_gadgets[GID_1_TE2], MainWindowPtr, NULL,
GA_TEXTEDITOR_Contents, report.textfield[1]
);
SetGadgetAttrs
( report_gadgets[GID_1_TE3], MainWindowPtr, NULL,
GA_TEXTEDITOR_Contents, report.textfield[2]
);
SetGadgetAttrs
( report_gadgets[GID_1_TE4], MainWindowPtr, NULL,
GA_TEXTEDITOR_Contents, report.textfield[4]
);
break;
case COM:
if (report.severity == 3)
{ SetGadgetAttrs
( report_gadgets[GID_1_TE1], MainWindowPtr, NULL,
GA_TEXTEDITOR_Contents, report.textfield[2]
); // if this works differently...
} else
{ for (i = 0; i <= 4; i++)
{ SetGadgetAttrs
( report_gadgets[GID_1_TE1 + i], MainWindowPtr, NULL,
GA_TEXTEDITOR_Contents, report.textfield[i]
);
} }
break;
case ENH:
SetGadgetAttrs
( report_gadgets[GID_1_TE1], MainWindowPtr, NULL,
GA_TEXTEDITOR_Contents, report.textfield[5]
); // enhancement request
break;
default:
; // assert(0);
break;
}
/* 0: brief bug description
1: bug generation procedure or example
2: if this works differently...
3: what developer is doing...
4: related problems
5: enhancement request */
ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE1]);
loop();
for (i = 0; i <= elements; i++)
{ textBuffer[i] = (STRPTR) DoGadgetMethod(report_gadgets[GID_1_TE1 + i], MainWindowPtr, NULL, GM_TEXTEDITOR_ExportText, NULL);
}
switch(report.type)
{
case BUG:
strcpy(report.textfield[0], textBuffer[0]); // brief bug description
strcpy(report.textfield[1], textBuffer[1]); // bug generation procedure or example
strcpy(report.textfield[2], textBuffer[2]); // if this works differently...
strcpy(report.textfield[4], textBuffer[3]); // related problems
break;
case COM:
if (report.severity == 3)
{ strcpy(report.textfield[2], textBuffer[0]); // if this works differently...
} else
{ strcpy(report.textfield[0], textBuffer[0]); // brief bug description
strcpy(report.textfield[1], textBuffer[1]); // bug generation procedure or example
strcpy(report.textfield[2], textBuffer[2]); // if this works differently...
strcpy(report.textfield[3], textBuffer[3]); // what developer is doing...
strcpy(report.textfield[4], textBuffer[4]); // related problems
}
break;
case ENH:
strcpy(report.textfield[5], textBuffer[0]); // enhancement request
break;
default:
; // assert(0);
break;
}
for (i = 0; i <= elements; i++)
{ FreeVec((APTR) textBuffer[i]);
textBuffer[i] = NULL;
}
closewindow();
}
MODULE ULONG Hook1Func(struct Hook *h, VOID *o, VOID *msg)
{ /* "When the hook is called, the data argument points to the
window object and message argument to the IntuiMessage." */
UWORD code, qual;
ULONG scroll = 0;
geta4(); // wait till here before doing anything
code = ((struct IntuiMessage *) msg)->Code;
qual = ((struct IntuiMessage *) msg)->Qualifier;
switch(code)
{
case SCAN_HELP:
helpabout();
break;
case SCAN_ESCAPE:
/* Crashes to try to go to page 0, or quit the program, from page
12. Must go via page 11 first. Although clicking the close
gadget to go to page 0 seems to work fine. */
if (page != 12 && ((qual & IEQUALIFIER_LSHIFT) || (qual & IEQUALIFIER_RSHIFT)))
{ cleanexit(EXIT_SUCCESS);
} elif (page == 11)
{ page = 0;
} else
{ // assert(page == 12);
page = 11;
}
break;
case SCAN_UP:
if (report.type != COM)
{ if (qual & IEQUALIFIER_CONTROL)
{ scroll = LBP_TOP;
} elif (qual & IEQUALIFIER_LSHIFT || qual & IEQUALIFIER_RSHIFT)
{ scroll = LBP_PAGEUP;
} else scroll = LBP_LINEUP;
}
break;
case SCAN_DOWN:
if (report.type != COM)
{ if (qual & IEQUALIFIER_CONTROL)
{ scroll = LBP_BOTTOM;
} elif (qual & IEQUALIFIER_LSHIFT || qual & IEQUALIFIER_RSHIFT)
{ scroll = LBP_PAGEDOWN;
} else scroll = LBP_LINEDOWN;
}
break;
case SCAN_A:
if (page == 11 && report.type == COM)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST9]);
}
break;
case SCAN_B:
if (page == 12)
{ if (report.type == BUG || (report.type == COM && report.severity != 3))
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE2]);
} } // "_bug generation procedure or example", when present, is always GID_1_TE2.
break;
case SCAN_C:
if (page == 11)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST11]);
}
break;
case SCAN_D:
if (page == 11)
{ if (report.type != ENH)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST3]);
} }
elif (page == 12)
{ if (report.type == BUG || (report.type == COM && report.severity != 3))
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE1]);
} } // "brief bug _description", when present, is always GID_1_TE1.
break;
case SCAN_E:
if (page == 12 && report.type == ENH)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE1]);
} // "_enhancement request", when present, is always GID_1_TE1.
break;
case SCAN_H:
if (page == 11)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST13]);
}
break;
case SCAN_I:
if (page == 11)
{ if ((qual & IEQUALIFIER_LSHIFT) || (qual & IEQUALIFIER_RSHIFT))
{ if (report.agnus == 0)
report.agnus = AGNUSES;
else report.agnus--;
} else
{ if (report.agnus == AGNUSES)
report.agnus = 0;
else report.agnus++;
}
SetGadgetAttrs
( report_gadgets[GID_1_CH5], MainWindowPtr, NULL,
CHOOSER_Selected, report.agnus
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH5], MainWindowPtr, NULL);
} elif (page == 12)
{ if (report.type == BUG || (report.type == COM && report.severity != 3))
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE3]);
} elif (report.type == COM && report.severity == 3)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE1]);
} }
break;
case SCAN_K:
if (page == 11 && report.type != ENH)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST4]);
}
break;
case SCAN_M:
if (page == 11)
{ if ((qual & IEQUALIFIER_LSHIFT) || (qual & IEQUALIFIER_RSHIFT))
{ if (report.model == 0)
report.model = MODELS;
else report.model--;
} else
{ if (report.model == MODELS)
report.model = 0;
else report.model++;
}
SetGadgetAttrs
( report_gadgets[GID_1_CH3], MainWindowPtr, NULL,
CHOOSER_Selected, report.model
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH3], MainWindowPtr, NULL);
}
break;
case SCAN_N:
if (page == 11)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_IN1]);
}
break;
case SCAN_O:
if (page == 11 && report.type == BUG)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST6]);
}
break;
case SCAN_P:
if (page == 11)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST7]);
}
break;
case SCAN_R:
if (page == 11)
{ if (report.type == COM)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST8]);
} }
elif (page == 12)
{ if (report.type == BUG)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE4]);
} elif (report.type == COM && report.severity != 3)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE5]);
} }
break;
case SCAN_S:
if (page == 11)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST1]);
}
break;
case SCAN_T:
if (page == 11)
{ if ((qual & IEQUALIFIER_LSHIFT) || (qual & IEQUALIFIER_RSHIFT))
{ if (report.type == 0)
{ report.type = 2;
} else report.type--;
} else
{ if (report.type == 2)
{ report.type = 0;
} else report.type++;
}
updatereportgadgets();
}
break;
case SCAN_U:
if (page == 11)
{ if ((qual & IEQUALIFIER_LSHIFT) || (qual & IEQUALIFIER_RSHIFT))
{ if (report.cpu == 0)
report.cpu = CPUS;
else report.cpu--;
} else
{ if (report.cpu == CPUS)
report.cpu = 0;
else report.cpu++;
}
SetGadgetAttrs
( report_gadgets[GID_1_CH4], MainWindowPtr, NULL,
CHOOSER_Selected, report.cpu
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH4], MainWindowPtr, NULL);
}
break;
case SCAN_V:
if (page == 11 && report.type == COM)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST10]);
}
break;
case SCAN_W:
if (page == 11)
{ if (report.type != ENH)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST5]);
} }
elif (page == 12 && report.type == COM && report.severity != 3)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY1], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_TE3]);
} // "_what developer is doing...", when present, is always GID_1_TE4.
break;
case SCAN_X:
if (page == 11)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST14]);
}
break;
case SCAN_Y:
if (page == 11 && report.type != ENH)
{ if ((qual & IEQUALIFIER_LSHIFT) || (qual & IEQUALIFIER_RSHIFT))
{ if (report.severity == 0)
{ report.severity = 3;
} else report.severity--;
} else
{ if (report.severity == 3)
{ report.severity = 0;
} else report.severity++;
}
if (report.type == BUG && report.severity == 3)
{ report.severity = 0;
}
SetGadgetAttrs
( report_gadgets[GID_1_CH1], MainWindowPtr, NULL,
CHOOSER_Selected, report.severity
);
RefreshGadgets((struct Gadget *) report_gadgets[GID_1_CH1], MainWindowPtr, NULL);
}
break;
case SCAN_SLASH:
if (page == 11)
{ ActivateLayoutGadget(report_gadgets[GID_1_LY2], MainWindowPtr, NULL, (Object) report_gadgets[GID_1_ST12]);
}
break;
case SCAN_PERIOD:
if (page == 11 && report.type == BUG)
{ if (asl("~(#?.info)"))
{ strcpy(report.pp, aslresult);
SetGadgetAttrs
( report_gadgets[GID_1_ST7], MainWindowPtr, NULL,
STRINGA_TextVal, report.pp
);
refreshpv();
} }
break;
default:
break;
}
if (report.type != ENH && (code == SCAN_UP || code == SCAN_DOWN))
{ SetGadgetAttrs
( report_gadgets[GID_1_LB1], // pointer to gadget
MainWindowPtr, // pointer to window (not window object!)
NULL, // pointer to requester
LISTBROWSER_Position, scroll, // tags
TAG_DONE // done
);
}
return(1);
}
MODULE void updateemail(void)
{ if
( (!stricmp(subsystems[report.subsystem].unfriendly, "wormwars"))
|| (!stricmp(subsystems[report.subsystem].unfriendly, "report+"))
|| (!stricmp(subsystems[report.subsystem].unfriendly, "saga"))
)
{ SetGadgetAttrs
( report_gadgets[GID_1_ST2], MainWindowPtr, NULL,
STRINGA_TextVal, "amigansoftware@abime.net"
); // email to
} else
{ SetGadgetAttrs
( report_gadgets[GID_1_ST2], MainWindowPtr, NULL,
STRINGA_TextVal, "support@haage-partner.com"
); // email to
} }